/*************************************************************************
 * 文件名称：Log4cplus日志库，操作模块
 * 作    者：Smile
 * 创建时间：2023-10-18 11:52:50
 * 模块名称：
 * 主要函数：
 * 功    能：
 * 版    本：1.0 基于2.0.8版本制作
 * 与其他文件的关系：
 * 修改记录：
 * 1.0->
	 * 初始化代码
 * 1.2->
	 *
 * 调用示例：
// 没有文件名、行号、函数信息的
WTRACE(msg)
WDEBUG(msg)
WINFO(msg)
WWARN(msg)
WERROR(msg)
WFATAL(msg)

ITRACE(msg)
IDEBUG(msg)
IINFO(msg)
IWARN(msg)
IERROR(msg)
IFATAL(msg)
 ************************************************************************/
#ifndef WLOG4CPLUS_H
#define WLOG4CPLUS_H
#include <log4cplus/log4cplus.h>
#include <iostream>

class WLog4cplus
{
public:
	WLog4cplus(const WLog4cplus &) = delete;
	WLog4cplus &operator=(const WLog4cplus &) = delete;
	~WLog4cplus();

	static WLog4cplus &getInstance() {
		static WLog4cplus instance;
		return instance;
	}

	void test();
	void trace(const char *msg);
	void debug(const char *msg);
	void info(const char *msg);
	void warn(const char *msg);
	void error(const char *msg);
	void fatal(const char *msg);

	void tracemsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");
	void debugmsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");
	void infomsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");
	void warnmsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");
	void errormsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");
	void fatalmsg(const char *msg, const char *filename = __FILE__, int line = __LINE__, const char *function = "func");

	log4cplus::Logger logger;

protected:
	WLog4cplus();
};


// 带文件名，位置，函数信息的。
#define ITRACE(msg) WLog4cplus::getInstance().tracemsg(msg,__FILE__,__LINE__,__FUNCTION__);
#define IDEBUG(msg) WLog4cplus::getInstance().debugmsg(msg,__FILE__,__LINE__,__FUNCTION__);
#define IINFO(msg) WLog4cplus::getInstance().infomsg(msg,__FILE__,__LINE__,__FUNCTION__);
#define IWARN(msg) WLog4cplus::getInstance().warnmsg(msg,__FILE__,__LINE__,__FUNCTION__);
#define IERROR(msg) WLog4cplus::getInstance().errormsg(msg,__FILE__,__LINE__,__FUNCTION__);
#define	IFATAL(msg) WLog4cplus::getInstance().fatalmsg(msg,__FILE__,__LINE__,__FUNCTION__);


#define WTRACE(msg) WLog4cplus::getInstance().trace(msg);
#define WDEBUG(msg) WLog4cplus::getInstance().debug(msg);
#define WINFO(msg) WLog4cplus::getInstance().info(msg);
#define WWARN(msg) WLog4cplus::getInstance().warn(msg);
#define WERROR(msg) WLog4cplus::getInstance().error(msg);
#define WFATAL(msg) WLog4cplus::getInstance().fatal(msg);

#endif // WIDGET_H
